package cn.com.surker.production.dao;

import cn.com.surker.production.entity.ProductionIndent;
import cn.com.surker.production.entity.PumpDevice;
import cn.com.surker.production.entity.report.ProductionIndentReport;
import cn.com.surker.production.entity.vo.ProductionIndentDisVo;
import cn.com.surker.production.entity.vo.ProductionIndentVo;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 生产计划表 Mapper 接口
 * </p>
 *
 * @author admin
 * @since 2024-07-25
 */
public interface ProductionIndentDao extends BaseMapper<ProductionIndent> {


    List<ProductionIndent> queryAll(ProductionIndent productionIndent);

	/**
	 * 查询任务单全程
	 *
	 * @param page
	 * @param queryWrapper
	 * @return
	 */
	IPage<ProductionIndentVo> selectFull(IPage<ProductionIndent> page, String dbCode, @Param(Constants.WRAPPER) Wrapper<ProductionIndent> queryWrapper);


	/**
	 * 查询任务单列表
	 *
	 * @param qw
	 * @return
	 */
	List<ProductionIndentVo> selectFull(String dbCode, @Param(Constants.WRAPPER) QueryWrapper<ProductionIndent> qw);

	/**
	 * 根据任务单id,查询泵送设备
	 *
	 * @param indentId
	 * @return
	 */
	List<PumpDevice> findByIndentId(Long indentId);

	ProductionIndentVo queryFullById(String dbCode, Long id);

	List<ProductionIndent> selectListV2(String dbCode, @Param(Constants.WRAPPER) QueryWrapper<ProductionIndent> qw);

	int updateSubType(String dbCode, Long indentId, String subTypes);

	ProductionIndent getBaseById(String dbCode, Long indentId);

	/**
	 * 设置任务单批次
	 *
	 * @param dbCode
	 * @param indentIdList
	 * @param batchId
	 */
	int setIndentBatch(String dbCode, List<Long> indentIdList, Long batchId);

	int removeIndentBatch(String dbCode, List<Long> indentIdList);

	/**
	 * 查询erp中最大的任务单id,用于对接
	 *
	 * @param dbCode
	 * @return
	 */
	@Deprecated
	Long findMaxErpId(String dbCode);

	/**
	 * 批量保存数据
	 *
	 * @param dbCode
	 * @param oaIndentList
	 */
	void saveBatchV2(String dbCode, List<ProductionIndent> oaIndentList);

	/**
	 * 根据erpid查询数据
	 *
	 * @param dbCode
	 * @param erpId
	 * @return
	 */
	@Deprecated
	ProductionIndent findByErpId(String dbCode, Long erpId);

	/**
	 * 查询总览数据
	 *
	 * @param dbCode 数据库
	 * @param qw     查询参数
	 * @return
	 */
	IPage<ProductionIndentReport> overviewStat(IPage<ProductionIndentReport> page, String dbCode, @Param(Constants.WRAPPER) QueryWrapper<ProductionIndent> qw, String startTime, String endTime);

	List<ProductionIndentReport> overviewStat(String dbCode, @Param(Constants.WRAPPER) QueryWrapper<ProductionIndent> qw, String startTime, String endTime);

	/**
	 * 查询计划量
	 * @param startTime
	 * @return planStere 计划累计量
	 */
	Double findPlanStere(String startTime, String endTime);

	Double findCloudPlanStere(String dbCode, String startTime, String endTime);
	/**查询总单数**/
	Integer findCloudTotal(String dbCode, String startTime, String endTime);
	/**
	 * 调度页面展示的任务单
	 *
	 * @param dbCode
	 * @param qw
	 * @return
	 */
	List<ProductionIndentDisVo> dispatchList(String dbCode, @Param(Constants.WRAPPER) QueryWrapper<ProductionIndent> qw);
}
